package com.topInterview;

import java.util.HashMap;

/**
 * @Author: huangzhigao
 * @Date: 2022/2/13 14:52
 */
public class Leetcode13_RomanToInteger {

    //通常情况下，罗马数字中小的数字在大的数字的右边，
    // 若存在小的数字在大的数字的左边的情况，根据规则需要减去小的数字。对于这种情况，我们也可以将每个字符视作一个单独的值，若一个数字右侧的数字比它大，则将该数字的符号取反。。
    public int romanToInt(String s) {
        HashMap<Character, Integer> map = new HashMap<>();
        map.put('I', 1);
        map.put('V', 5);
        map.put('X', 10);
        map.put('L', 50);
        map.put('C', 100);
        map.put('D', 500);
        map.put('M', 1000);
        char[] chars = s.toCharArray();
        int res = 0;
        for (int i = 0; i < chars.length - 1; i++) {
            if (map.get(chars[i]) < map.get(chars[i + 1])) {
                res += -map.get(chars[i]);
            } else {
                res += map.get(chars[i]);
            }
        }

        res += map.get(chars.length - 1);
        return res;
    }

}
